* creating spells 
capture log close   
version 13
local gruppo = 1
log  using  .../A_3_`gruppo'.smcl, replace

use ".../stock_survival_10sample_all_rev1.dta", clear
set more off

*** split the spells into different components
sort id year
tsset id year, y
tsspell lm_status_`gruppo', end(a_end_`gruppo') seq(a_seq_`gruppo') spell(a_spell_`gruppo')
label var a_spell_`gruppo' "definition 1: spell number from the first spell onwards"
label var a_seq_`gruppo' "definition 1: duration - going from 1,2,3 etc"
label var a_end_`gruppo' "definition 1: dummy for when the spell ends"

*** left censoring indicator for self employment or wage income- only defined for year=1993
*** since the other entries are presumably entry after school.
bys id (year): gen lcensor_`gruppo'=((lm_status_`gruppo'==1 | lm_status_`gruppo'==2) & a_seq_`gruppo'==1 & a_spell_`gruppo'==1 & year==1993)
bys id (year): egen lcens_id_`gruppo'=max(lcensor_`gruppo')
bys id a_spell_`gruppo': egen lcens_spell_`gruppo'=max(lcensor_`gruppo')

** drop last spell if unemployed and record the last spell was unemployment
bys id (year): egen numbspells_`gruppo'=max(a_spell_`gruppo')
gen lsp_un_`gruppo' = (lm_status_`gruppo'==0 & a_spell_`gruppo'==numbspells_`gruppo')
bys id (year): egen lastsp_unem_`gruppo'=max(lsp_un_`gruppo')
gen ban_`gruppo' = ( lm_status_`gruppo'==0 & a_spell_`gruppo'==numbspells_`gruppo')
drop lsp_un

** drop first spell if unemployed
replace ban_`gruppo' = 1 if lm_status_`gruppo'==0 & a_spell_`gruppo'==1
drop if ban_`gruppo'==1    

** drop individuals if they have some unemployement spells between wage and/or self_empl spells
gen d=( lm_status_`gruppo'==0 & (lm_status_`gruppo'[_n-1]==1 | lm_status_`gruppo'[_n-1]==2) & id[_n-1]==id)
gen dd=( lm_status_`gruppo'==0 & (lm_status_`gruppo'[_n+1]==1 | lm_status_`gruppo'[_n+1]==2) & id[_n+1]==id)
bys id (year): egen d1=max(d)
bys id (year): egen dd1=max(dd)
replace ban_`gruppo' = 1 if dd1==1 & d1==1
drop dd d  d1    dd1 
replace ban_`gruppo' = 1 if lm_status_`gruppo'==0

** drop people that change every or mostly every year status
drop numbspells_`gruppo'
drop  a_end_`gruppo' a_seq_`gruppo' a_spell_`gruppo'   
tsset id year, y   
tsspell lm_status_`gruppo' if ban_`gruppo' == 0, end(a_end_`gruppo') seq(a_seq_`gruppo') spell(a_spell_`gruppo')  
bys id (year): egen numbspells_`gruppo'=max(a_spell_`gruppo')    
bys id (year): gen numbobs=_N
gen drop1=((numbspells_`gruppo'==numbobs) & numbobs>=2)   
gen drop2=((numbspells_`gruppo'>=numbobs-1) & numbobs>=5)  
gen drop3=((numbspells_`gruppo'>=numbobs-2) & numbobs>=7)       
gen drop4=((numbspells_`gruppo'>=numbobs-3) & numbobs>=9)    
gen drop5=((numbspells_`gruppo'>=numbobs-4) & numbobs>=10)    
gen drop6=((numbspells_`gruppo'>=numbobs-5) & numbobs>=11)  
gen drop7=((numbspells_`gruppo'>=numbobs-6) & numbobs>=12)      
replace ban_`gruppo' = 1 if drop1 | drop2 | drop3 | drop4 | drop5 | drop6 | drop7
drop drop*
drop numbobs numbspells_`gruppo'

*gen right_censored
drop  a_end_`gruppo' a_seq_`gruppo' a_spell_`gruppo' 
tsset id year, y
tsspell lm_status_`gruppo' if ban_`gruppo' == 0, end(a_end_`gruppo') seq(a_seq_`gruppo') spell(a_spell_`gruppo')
bys id a_spell_`gruppo': egen dur_`gruppo'=max(a_seq_`gruppo')
bys id a_spell_`gruppo': gen l_dur_yr_`gruppo'=year if a_seq_`gruppo'==dur_`gruppo'
replace l_dur_yr_`gruppo'=0 if l_dur_yr_`gruppo'==.
bys id a_spell_`gruppo': egen last_dur_yr_`gruppo'=max(l_dur_yr_`gruppo')
drop l_dur_yr_`gruppo'
bys  id (a_spell_`gruppo' a_seq_`gruppo'): gen last_yr_`gruppo'=year if _n==_N
replace last_yr_`gruppo' = . if ban_`gruppo'==1
bys id: egen last_yr_smpl_`gruppo'=max(last_yr_`gruppo')
bys id a_spell_`gruppo': gen r_c_`gruppo'=(last_dur_yr_`gruppo'==last_yr_smpl_`gruppo') 

** duration variable
gen durvar_`gruppo'=0 if a_seq_`gruppo'!=dur_`gruppo' 
replace durvar_`gruppo'=1 if a_seq_`gruppo'==dur_`gruppo' & r_c_`gruppo'==0 & ban_`gruppo' == 0
replace durvar_`gruppo'=0 if a_seq_`gruppo'==dur_`gruppo' & r_c_`gruppo'==1 & ban_`gruppo' == 0
*let sedum=1 if spell is self employment   0 otherwise
gen sedum_`gruppo'=(lm_status_`gruppo'==1)
replace sedum_`gruppo'=. if lm_status_`gruppo'==0
save ".../left_cens_spell_10sample_all_4type_`gruppo'_rev1.dta",replace
log close 
